package com.cs.paoyer.administration.web.action;

import com.cs.beneficios.business.entity.AreasDAO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.paoyer.administration.business.model.UserGroupVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import java.sql.SQLException;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import java.util.Vector;
import java.util.Collection;
import com.cs.paoyer.administration.business.AdministrationMngr;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.web.form.UserForm;
import com.cs.paoyer.common.exception.CommonUserException;
//import com.cs.paoyer.administration.business.client.AdministrationDelegate;
import com.cs.paoyer.common.exception.UserException;
import com.cs.paoyer.common.exception.SystemException;
import com.cs.paoyer.administration.util.AccessControl;

  
public class ModifyUserAction extends Action  {
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    
    UserForm userForm = ( UserForm ) form;
    ActionMessages messages = new ActionMessages();
	//ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
	ConnectionFactory cf = new ConnectionFactory();
		
    
    try
		{
				AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        //AdministrationDelegate delegate = new AdministrationDelegate();
        AdministrationMngr delegate = new AdministrationMngr();				
        HttpSession session = request.getSession();
        UserVO user= new UserVO();
				user.setCode(userForm.getCode());
				Vector users = new Vector(delegate.findUserByCriterea(user));
				user = (UserVO)users.firstElement();
        
        String strCodeArea = user.getCodeArea()+"";
				session.setAttribute("userSelected",user);
        request.setAttribute("codeArea",strCodeArea);
        
        UserGroupVO userGroup = new UserGroupVO();
        UserVO user1 = (UserVO)session.getAttribute("userInfo");
        userGroup.setCode(new Long(0));
        userGroup.setWebUserModif("false");
        userGroup.setName(user1.getUserGroupName());
				Collection userGroups = delegate.findUserGroupByCriterea(userGroup);
				session.removeAttribute("userGroups");
				
        Collection coAreas = null;
        try
        {
          AreasDAO objArea = new AreasDAO(cf);
          coAreas = (Collection)objArea.ViewAllAreas();
          cf.closeConnection(objArea.getConn());
        }catch(SQLException sqle)
        {
			System.err.println("/******** TDSUB - cwsub");
			sqle.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
        }
        
        
				if(userGroups!=null && userGroups.size()>0)
				{
						session.setAttribute("userGroups",userGroups);
				}
        if(coAreas != null && coAreas.size() != 0)
        {
          //request.setAttribute("listAreas",coAreas);
          session.setAttribute("listAreas",coAreas);
        }
			
    }
		catch (UserException ue) 
		{
				messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }

      
    }
		catch ( SystemException se) 
		{
				messages.add("msgError",  new ActionMessage("loginForm.message."
																			+ se.getExceptionVO().getId()));
				saveMessages(request, messages);
				return mapping.getInputForward();
    }
    return mapping.findForward("success");
  }
}